//禁止拷贝
class NonCopyable 
{
protected:
    // Default constructor
    NonCopyable() = default;
    // Destructor
    ~NonCopyable() = default;

    // Delete copy constructor and assignment operator
    NonCopyable(const NonCopyable&) = delete;
    NonCopyable& operator=(const NonCopyable&) = delete;
    // Delete move constructor and assignment operator
    NonCopyable(NonCopyable&&) = delete;
    NonCopyable& operator=(NonCopyable&&) = delete;
};